//
//  main.m
//  OC08_类的拓展
//
//  Created by Hanlingyu on 16/7/13.
//  Copyright © 2016年 ltq. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "NSObject+SayHello.h"
#import "NSString+GetFirstChar.h"
#import "Student.h"
#import "BuyPerson.h"
int main(int argc, const char * argv[]) {
    
    // 类的扩展方式:
    // 1. Category (类别, 类目, 分类)
    //  1> Category的创建
    // 通过Object-C File创建
    // 会产生两个文件.h .m
    // 文件名会以类名+ category命名
    //  2> Category的使用, 向对应文件中添加需要添加方法引入到你对应要使用的位置
    
    NSObject *objc = [[NSObject alloc] init];
    [objc sayHellow];
    
    // 练习: 为NSString类扩展一个新的方法, 要求获取字符串的首字母并且将首字母大写
    NSString *string = @"lanou";
    NSString *firstChar = [string getFirstChar];
    NSLog(@"%@", firstChar);
    
#pragma mark - Extension
    // 延展, 一般定义在.m中, 其中声明一些私有的属性 / 方法
    // 保持.h的整洁
    
    
#pragma mark - 代理delegate设计模式
    // 举例: 海外代购
    
    Student *stu = [[Student alloc] init];
    BuyPerson *buyPerson = [[BuyPerson alloc] init];
#pragma mark - 6. 设置代理人
    stu.delegate = buyPerson;
    [stu seeWeChat];
    
    
    
    return 0;
}
